/*     */ package com.zimbra.cs.service.account;
/*     */ 
/*     */ import com.zimbra.common.account.Key.AccountBy;
/*     */ import com.zimbra.common.service.ServiceException;
/*     */ import com.zimbra.common.soap.Element;
/*     */ import com.zimbra.cs.account.Account;
/*     */ import com.zimbra.cs.account.Provisioning;
/*     */ import com.zimbra.cs.account.Server;
/*     */ import com.zimbra.cs.service.AuthProvider;
/*     */ import com.zimbra.soap.ZimbraSoapContext;
/*     */ import java.util.Map;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public abstract class GalDocumentHandler
/*     */   extends AccountDocumentHandler
/*     */ {
/*  33 */   private static final String[] TARGET_ACCOUNT_PATH = { "galAcctId" };
/*     */   
/*     */   protected String[] getProxiedAccountPath() {
/*  36 */     return TARGET_ACCOUNT_PATH;
/*     */   }
/*     */   
/*     */   protected Element proxyIfNecessary(Element request, Map<String, Object> context) throws ServiceException
/*     */   {
/*     */     try
/*     */     {
/*  43 */       ZimbraSoapContext zsc = getZimbraSoapContext(context);
/*     */       
/*  45 */       Provisioning prov = Provisioning.getInstance();
/*     */       
/*     */ 
/*  48 */       String[] xpath = getProxiedAccountPath();
/*  49 */       String acctId = xpath != null ? getXPath(request, xpath) : null;
/*  50 */       if (acctId != null) {
/*  51 */         Account acct = prov.get(Key.AccountBy.id, acctId, zsc.getAuthToken());
/*  52 */         if (acct != null) {
/*  53 */           if (!Provisioning.onLocalServer(acct))
/*     */           {
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*  78 */             boolean proxied = request.getAttributeBool("galAcctProxied", false);
/*  79 */             if (proxied)
/*     */             {
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*  93 */               return proxyRequest(request, context, AuthProvider.getAdminAuthToken(), acctId);
/*     */             }
/*     */             
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/* 106 */             Server server = acct.getServer();
/* 107 */             return proxyRequest(request, context, server);
/*     */           }
/*     */           
/*     */ 
/* 111 */           return null;
/*     */         }
/*     */       }
/*     */       
/*     */ 
/*     */ 
/* 117 */       return super.proxyIfNecessary(request, context);
/*     */     }
/*     */     catch (ServiceException e) {
/* 120 */       if ("service.PROXY_ERROR".equals(e.getCode())) {
/* 121 */         return null;
/*     */       }
/*     */       
/* 124 */       throw e;
/*     */     }
/*     */   }
/*     */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/cs/service/account/GalDocumentHandler.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */